
class Vue{
    constructor(obj){

        // 钩子函数1： 数据挂载前的钩子函数
        this.beforeCreate&&this.beforecreate();

        // 一: 数据挂载阶段： 把data 配置项中的每个属性都挂载到vue对象上
            for(let key in obj.data){  //循环对象 ，key 就是obj.data里的属性名
                let val = obj.data[key];  // 保存 msg的值

                // Object.defineProperty(那一个对象，属性名，{配置项})
                // key 表示 msg
                Object.defineProperty(this ,key,{
                    set: function(newval){
                        console.log('你修改了',key);
                        val = newval;
                    },
                    get:function(){
                        return val;
                    }
                })

            }

        // 钩子函数2: 数据挂载后
        this.created&&this.created()
            
    }
}